【项目实战3】Haproxy实现负载均衡 |
您所在的位置:网站首页 › haproxy tcp 负载均衡 › 【项目实战3】Haproxy实现负载均衡 |
Haproxy实现负载均衡
一、基础性知识(1) 、Haproxy概念(2)、四层负载(3)、七层负载
二、项目搭建准备三、haproxy的安装使用四、Haproxy的访问控制五、Haproxy的高级设置(1)、备用机的启用(2)、访问黑白名单设定(3)、访问重定向(4)、访问上传时的读写分离
一、基础性知识
(1) 、Haproxy概念
haproxy除了实现均衡负载,还可以做到访问重定向,读写分离等。可以结合上一节的keepalive或者下一节的pacemaker,coresync实现高可用。适应于电商这种多台服务器进行反向代理,利用此模式进行高可用和均衡访问,保证安全性和合理分配资源。 1)Haproxy7层负载均衡概念: 1.HAProxy是一种高效、可靠、免费的高可用及负载均衡解决方案,非常适合于高负载站点的七层数据请求。 因为HAProxy实现了一种事件驱动、单一进程模型,此模型支持非常大的并发连接数。客户端通过HAProxy代理服务器获得站点页面,而代理服务器收到客户请求后根据负载均衡的规则将请求数据转发给后端真实服务器。HAProxy还支持Session的保持和Cookie的引导。 2.HAProxy有前端(frontend)和后端(backend),前端和后端都可以有多个。也可以只有一个listen块来同时实现前端和后端。 前端(frontend)区域可以根据HTTP请求的header信息来定义一些规则,然后将符合某规则的请求转发到相应后端(backend)进行处理。因此HAProxy可以实现动静分离(动静分离简单来说就是指将静态请求转发到对应的静态资源服务器,将动态请求转发到动态资源服务器),我们上篇说过的LVS就没有此功能。2)Haproxy的优缺点 优点 1.支持两种代理模式:TCP(四层)和HTTP(七层),支持虚拟主机; 2.支持Session的保持,Cookie的引导;同时支持通过获取指定的url来检测后端服务器的状态。能够补充Nginx的一些缺点。 3.HAProxy跟LVS类似,本身就只是一款负载均衡软件;单纯从效率上来讲HAProxy会比Nginx有更出色的负载均衡速度,在并发处理上也是优于Nginx的。 4.HAProxy可以对Mysql进行负载均衡,对后端的DB节点进行检测和负载均衡。 5.HAProxy负载均衡策略非常多,比如:动态加权轮循(Dynamic Round Robin),加权源地址哈希(Weighted Source Hash),加权URL哈希和加权参数哈希(Weighted Parameter Hash) 6.免费开源,稳定性也是非常好,可以与LVS相媲美; 7.自带强大的监控服务器状态的页面,实际环境中我们结合Nagios进行邮件或短信报警; 缺点: 1.不支持POP/SMTP协议 SPDY协议; 2.不能做Web服务器,即不支持HTTP cache功能; 3.重载配置的功能需要重启进程,虽然也是soft restart,但没有Nginx的reaload更为平滑和友好; 4.多进程模式支持不够好; (2)、四层负载将网络流量负载平衡到多个服务器的最简单方法是使用第4层(传输层)负载平衡。以这种方式进行负载均衡将根据IP范围和端口转发用户流量。用户访问负载均衡器,负载均衡器将用户的请求转发给后端服务器的Web后端组。无论选择哪个后端服务器,都将直接响应用户的请求。通常,Web后端中的所有服务器应该提供相同的内容 - 否则用户可能会收到不一致的内容。 7层负载均衡是更复杂的负载均衡。网络流量使用第7层(应用层)负载均衡,允许负载均衡器根据用户请求的内容将请求转发到不同的后端服务器。这种负载平衡模式允许在同一域和端口下运行多个Web应用程序服务器。 server1 172.25.42.1作为调度器 server2 172.25.42.2作为服务器 server3 172.25.42.3作为服务器 三、haproxy的安装使用server1中 1、下载软件,修改配置文件 yum install haproxy.x86_64 vim /etc/security/limits.conf当谁访问server1的80端口时,就会指引向后端的服务器 2、启用haproxy服务、查看状态 重启服务 systemctl restart haproxy.service检查端口,haproxy正在监听80端口 netstat -antlp|grep 80
登陆效果 根据访问端对调度端的不同请求将其引导到不同的界面 1、server1调度端更改配置文件 vim /etc/haproxy/haproxy.cfg 图1 systemctl restart haproxy.service图1 当后端都有问题时,调度器server1自己作为备机 避免http端口与Haproxy冲突,启动http端口为8080 1、修改server1的http端口,更改haproxy的备用端口 echo server1 > /var/www/html/index.html vim /etc/httpd/conf/httpd.conf 修改为8080端口 systemctl restart httpd.service vim /etc/haproxy/haproxy.cfg 更改配置文件(如下图) systemctl restart haproxy.service
3、查看实验效果 关闭备用机器后启用备用服务器server1 1、修改server1的haproxy配置文件 vim /etc/haproxy/haproxy.cf 修改配置文件如下图所示 systemctl restart haproxy.service将真机172.25.42.250作为黑名单 1、黑名单用户访问显示403时,通过403特殊重定向到172.25.51.1:8080 vim /etc/haproxy/haproxy.cfg 修改配置文件如下图所示 systemctl restart haproxy.service
|
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |